package com.hiultra.archive.controller.print.javagodex.Controller;

import com.hiultra.archive.controller.print.javagodex.demos.web.GodexPrinter;
import com.hiultra.archive.controller.print.javagodex.demos.web.NullAndEmptyUtil;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*;

import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;


/**
 * @author
 * @date
 */
@RestController
@RequestMapping("print")
@RequiredArgsConstructor
@Slf4j
public class GoDexController {

    //创建打印机对象
    GodexPrinter godexPrinter =new GodexPrinter();
    //样式集合 括号内添加即可
    List<String> styleNumberList = new ArrayList<String>(Arrays.asList("15","40"));

    @GetMapping("/heartBeat")
    public int heartBeat(){
        //设置打印机连接属性 1连接成功 0连接失败（设置打印机连接 USB或串口）
        //System.out.println("心跳包");
        return godexPrinter.API.openport("6");
    }

    ////获取打印机样式
    @GetMapping("/styleNumber")
    public List<String> styleNumber(){
        //设置打印机连接属性 1连接成功 0连接失败（设置打印机连接 USB或串口）
        System.out.println("心跳包");
        return styleNumberList;
    }
    @PostMapping("/printBarcode")
    public int printBarcode(@RequestParam String labelSize, @RequestParam String contentData, @RequestParam String barcodeData) throws RuntimeException, UnsupportedEncodingException {
        if (NullAndEmptyUtil.isNullObject(labelSize)) {
            throw new RuntimeException("labelSize不能为空！");
        }
        //字体
        String FontName="黑体";
        //设置打印机连接属性 1连接成功 0连接失败（设置打印机连接 USB或串口）
        int openport = godexPrinter.API.openport("6");
        System.out.println("连接成功");

        if (labelSize.equals("40")){
            //设置输出的内容的字节
            byte[] byteData = contentData.getBytes("UTF-16LE");
            //请求前需设置
            godexPrinter.API.sendcommand("^L");
            //40毫米标签尺寸
            godexPrinter.API.setup(40,10,2,0,3,0);
            //请求后置设置，
            godexPrinter.API.ecTextOutW(50,220, 25, FontName, byteData,contentData.length());
            //40毫米标签尺寸
            godexPrinter.API.Bar("A3",  40, 100,2,4,120, 0,0,barcodeData);
            godexPrinter.API.sendcommand("E");
            godexPrinter.API.closeport();
            return openport;
        } else if (labelSize.equals("15")) {
            //设置输出的内容的字节
            byte[] byteData = contentData.getBytes("UTF-16LE");
            //请求前需设置
            godexPrinter.API.sendcommand("^L");
            //15毫米标签尺寸
            godexPrinter.API.setup(15,12,2,0,3,0);
            //15毫米标签尺寸
            godexPrinter.API.ecTextOutW(60,90, 25, FontName, byteData,contentData.length());
            //15毫米标签尺寸
            godexPrinter.API.Bar("A3", 60, 40,2,4,40, 0,0,barcodeData);
            godexPrinter.API.sendcommand("E");
            godexPrinter.API.closeport();
            return openport;
        } if (labelSize.equals("30")) {
            //设置输出的内容的字节
            byte[] byteData = contentData.getBytes("UTF-16LE");
            //请求前需设置
            godexPrinter.API.sendcommand("^L");
            //15毫米标签尺寸
            godexPrinter.API.setup(30,12,2,0,3,0);
            //15毫米标签尺寸 文字
            godexPrinter.API.ecTextOutW(300,150, 25, FontName, byteData,contentData.length());
            //15毫米标签尺寸  条码
            godexPrinter.API.Bar("A3", 220, 60,2,4,80, 0,0,barcodeData);
            godexPrinter.API.sendcommand("E");
            godexPrinter.API.closeport();
            return openport;
        }
        else {
            throw new RuntimeException("当前尺寸未在打印机尺寸中,请调试从重试！");
        }
        ////设置输出的内容的字节
        //byte[] byteData = contentData.getBytes("UTF-16LE");
        ////请求前需设置
        //godexPrinter.API.sendcommand("^L");
        ////40毫米标签尺寸
        //godexPrinter.API.setup(40,10,2,0,3,0);
        ////15毫米标签尺寸
        ////godexPrinter.API.setup(15,5,2,0,3,0);
        ////发送内容
        //// godexPrinter.API.ecTextOutW(PosX, PosY, FontHeight, FontName, byteData,data.length());
        ////6毫米标签尺寸
        ////godexPrinter.API.Bar("A3", 60, 20,2,6,4, 0,0,"12345678");
        ////40毫米标签尺寸
        //godexPrinter.API.Bar("A3",  40, 100,2,4,120, 0,0,barcodeData);
        ////15毫米标签尺寸
        ////godexPrinter.API.Bar("A3", 60, 40,2,4,40, 0,0,barcodeData);
        ////请求后置设置，
        //godexPrinter.API.ecTextOutW(50,220, 25, FontName, byteData,contentData.length());
        ////15毫米标签尺寸
        ////godexPrinter.API.ecTextOutW(60,90, 25, FontName, byteData,contentData.length());
        //godexPrinter.API.sendcommand("E");
        //godexPrinter.API.closeport();
        //return openport;
    }


}

